-------------------------------------------------
Icosahedron Character Creator .25 Data File Info
-------------------------------------------------

Pretty much all the info ICC uses are from data files. Which are all  just text files. (Only exception are the save files for a character). So, you can either make your own to fit your world, or customize mine.


--------
Notes
----------

I use game, setting, and world interchangeably. What I mean by them is the ruleset used by the program. For instance, this program comes with one for 3rd Edition


I use sequential file access exclusively for data files. What does that mean? Basically, it means I read items in one thing at a time. Basically, the program reads in something until it either hits a comma, or a next line/carriage return. So, don't use a comma unless you want to end an item or something. I know it's a pain, but it's much easier to handle file access that way, at least for data files.



---------------------------------
.Rul Files
---------------------------------

The name of the .rul file selected at startup determines what directory's datafiles are loaded. The program switchs to a subdirectory of the same name as the file.
So, they go in the same directory as the .exe

Right now, very little is in them. The first line is the name of the world/campaign.
The 2nd line is the first and last skill number for the profession skills. The 3rd line is for craft. (or maybe vice-versa).


-------------------------------------------------------------
.dat Files
-------------------------------------------------------------

All of these are just text files contain data on the setting/game. There are lots of these. 

Essentially, each setting/game need:

Alignments.dat - just a list of the alignments

Classes.dat - contains info on the classes in that setting/ruleset

Feats.dat - Just a list of the feat names

Races.dat - contains info on the races 

Languages.dat - just a list of the languages

License.dat - contains the license for that game/setting

Skills.dat - info on the skills in the game/setting

Plus, for each class, there are 3 files

classname.dat - basic info

classnameInitialFeats.dat - just the initial feats the class gets

classnameSkills.dat - a list of the skills, and which are cross, which are class, and which are prohibited.

And possibly:

classnameSpells.dat - essentially, the spells per day a class can cast.

classnameSpecial.dat - a listing of the special class abilities a character gets

======================================================================
Specific Data File Structure Details
======================================================================

===============================
Non-class specific Data Files
===============================

======================
Alignment.dat
======================

Just a list of each possible alignment, each one on a separate line


====================
Class.dat
====================

Each line follows this format:

ClassName,1st Level (Character, not class) Skill Points, Later Level Skill Points, Hit Dice Type, Uses Spells (0/1 = Spells Per Day, 2 = Vitus, 3 = Spell Points)


================
Feats.dat
================


Feat name,x, description of feat

Where x is the feat type or category. 1 is normal feat, 2 is magic creation, 3 is metamagic, and 4 is bonus. Feat type isn't used right now, but probably will be later on


================
Languagess.dat
================

Just a list of all the languages, each one on a separate line

================
License.dat
================

This is just a text file of the agreement. Limit of 65kb

====================
Race.dat
====================

Each line follows this format:

RaceName, StrMod, DexMod, ConMod, IntMod, WisMod, ChaMod

Which is just the name of the race, followed by the modifier (+ or -) for each ability

In the future I might add more to the end of the line representing the additional CR or Level that race is


================
Skills.dat
================

Each line follows this format:

Skillname, relevent ability

Where the relevent ability is a number. 1 = Str, 2 Dex, 3 Con, 4 Int, 5 Wis, 6 Cha




===============================
Class specific Data Files
===============================

Each class has 3 (for now) class specific data files.

  ClassName.dat
  ClassNameInitialFeats.dat
  ClassNameSkills.dat

And if the class can cast spells,

  ClassNameSpells.dat


Say I make a class named "Jeremy". I would add Jeremy to the 'classes.dat' file, and I need 3 files

  Jeremy.dat
  JeremyInitialFeats.dat
  JeremySkills.dat


The 3 class files are only loaded by ICC when you level up a character in the class, and in the spells.dat file, only when you print out the character (to file or printer or whatever). 

------------------
Classname.dat File
------------------

This is basically just the chart showing the attack bonuses and saves.

Each line represents a class level, and has 7 numbers separated by commas.

The first 4 numbers are the attack bonuses. The last 3 are the save bonuses.

It's quickest to just find a class I've done that is the same (or similar) as the one you are making, and copy and rename the classname.dat file. 

--------------------------
ClassnameInitialFeats.dat
--------------------------
This is easy. It's just a list of all the feats a character gets upon gaining 1st level in that class. However, the list is not the name, but the index numbers. So it's a bit tricky.

To do this easily, I created a tool to generate the list. Under the Tools menu in the program, pick 'Class Feat Assignment Tool'

That loads another form, which has a listbox of all the feats. Just double click all the ones that class has, then enter the class name in the apropriate box, and hit the 'Write to File' button. 

-----------------------
ClassnameSkills.dat
-----------------------

This is a bit tricky. 

Essentially, it's just a list of numbers, 1 number for each skill, and on each line of the file.

The number corresponds to whether that skill is a cross class skill (0), class(1) or prohibited (2)

Line 1 is skill 1, line 2 is skill 2, etc, in whatever order the skills are in in skills.dat

As this would be a nightmare to do by hand, I created a tool to do it for you. Run ICC, and pick "Class Skill Assignment Tool" under the tools menu. A form is then show.

On this form, is a list box of all the skills on the left. On the right, are two more list boxes, empty to begin with. The one on the top right is for class skills. The one on the bottom is for prohibited skills.

You just double click the skill on the listbox to the left, to move it to a skill box on the right. Which one it's moved to depends on how the radio button is set. For one, you can only move skills to the right hand boxes, not back, so don't make a mistake.

You can also move range of skills, by entering the low number in the left hand box, and the high number in the right. The number of the skill is displayed below the lstbox on the left when you click on the skill. There are 3 preset ranges which for right now are based on the 3rd Edition rules, but will eventually be customizable...

Once you are done, just enter a class name in the textbox, and hit write to disk. 

-------------------------
classnameSpells.dat
-------------------------

The first line starts with a number, representing the ablility the bonus spells are based on . 4 is Intelligence, 5 Wisdom, and 6 Charisma (1 = Str, 2 = Dex, 3 = Con), then there is a comma, then any notes you might want to put.  (If a class uses Vitus or Spell Points, just put this line...the ability the bonus is based on, plus any notes)

After that

Basically, just the spells of each spell level per day for each class level, starting with level 1.

Use a negative 1 (-1) for when a character can't cast a spell, and a 0 when he can only cast bonus spells.

You must go all the way up to spell level 9, even if there are not spells that high. And the same for those with no level 0 spells.

So, there will be 10 numbers per line, each line representing a class level. 



==========================
classnameSpecial.dat
==========================

Basically, each line is just a text description of what a character gets when they reaches the level. Each line represents one level. So the first line describes the 1st level in the class, the 2nd describes the 2nd, and so on. If there are none for that level, leave it blank, and if there are none for that class, omit the file entirely.





==========================================================
Random Names Files
==========================================================

If there is a file named 'racenameNames.dat', where racename is the name of the race (Elf would be Elfnames.dat, Dwarf would be DwarfNames.dat', etc), then it will be used to pick random names rather than my rather lousy random letter method.

This structure uses the same format as the random name files from my D6 Character Creator program. 

Basically, it's just a list of names, each one a different line. But it's divided into 3 sections, one for male first names, 1 for female first names, and 1 for last names. Each section should end in"


ENDMALENAMES

ENDFEMALESNAMES

ENDLASTNAMES


And they should be in that order. ENDLASTNAMES isn't really needed, it's just a holdover for file compatibility from my D6 character creator


----------------------------------
Armor.Dat
----------------------------------

This file contains all the available armor for the setting (or should), but probably not shields

Basically the format is straight from the SRD , only with commas between each value

Basically each line should be...

Name,Armor Bonus, Max Dex Bonus,Armor Check Penalty, Speed 30, Speed 20, Spell Failure, Cost



---------------------------------
Melee.dat
---------------------------------


Name,Size,Damage,Critical,Range Increment,Type, Cost

Probably will add weight

-----------------------------------
Missile.dat
----------------------------------

Not implemented yet, probably similar to melee.dat

